package com.tb.sng.utils
{
	import flash.text.Font;
	import flash.text.TextField;
	import flash.text.TextFormat;
	
	/**
	 * 常用的方法
	 * @author 任冬 rendong01@snda.com
	 * $Id: FontUtil.as 9 2012-08-12 17:04:32Z rendong237@gmail.com $
	 * @version 1.0
	 */
	public class FontUtil
	{		
		/**
		 * 缺失字体回调函数，参数：fontName, str 
		 */		
		public static var missFunc:Function = _missFunc;
		
		/**
		 * 缓存所有的字体对应关系 
		 */		
		private static var fonts:Object;
		
		/**
		 * 判断嵌入的字体是否可以显示文本
		 *  
		 * @param str	测试的字符串
		 * @param fontName	字体名称
		 * 
		 * @return true 可以显示， false 不能显示
		 */		
		public static function fontCanDisplay(str:String, fontName:String):Boolean
		{
			if (fonts == null)
			{
				fonts ={};
				var embeddedFonts:Array = Font.enumerateFonts(false);
				for(var i:int = 0; i< embeddedFonts.length;i++)
				{
					var font:Font = embeddedFonts[i];
					
					fonts[font.fontName] = font;
				}
			}
			if (fonts[fontName] && fonts[fontName].hasGlyphs(str))
				return true;
			else{
				if (missFunc is Function)
					missFunc(fontName, str);
				
				return false;
			}
		}
		
		/**
		 * 调试函数
		 * 输出缺失字体 
		 * @param fontName
		 * @param str
		 * 
		 */		
		private static function _missFunc(fontName:String, str:String):void
		{
			trace("Miss Font", fontName, str);
		}
		
		/**
		 * 设置嵌入字体显示 
		 * @param txt
		 * @param str 显示文本
		 * @param fontName
		 * 
		 */		
		public static function setEmbeddedFons(txt:TextField, str:String, fontName:String):void
		{
			if (fontCanDisplay(str, fontName))
			{
				var format:TextFormat = txt.defaultTextFormat;
			
				if (format == null)
					format = new TextFormat();
				
				format.font = fontName;
				
				txt.setTextFormat(format);
				txt.embedFonts = true;
			}else{
				txt.embedFonts = false;
			}
		}
	}
}